/******************************************************************************
 *  _____     _____
 *  \  __\    \  __\
 *   \ \_\\    \ \_\\
 *    \  __\SS  \  __\roject
 *     \_\       \_\
 *
 * Mateusz Maciąg, Rafał Urbański
 * Komputerowe Systemy Sterowania
 *****************************************************************************/

#ifndef ICONTROLLERDESIGNER_H
#define ICONTROLLERDESIGNER_H

#include <QScrollArea>

#include "SimInterface/IConfigurable.h"

/**
    Klasa abstrakcyjna konfiguratora dla regulatora.
*/
class ControllerDesigner : public QScrollArea
{
    Q_OBJECT

public:
    explicit ControllerDesigner(QWidget *parent) : QScrollArea(parent) {}
    virtual ~ControllerDesigner() {}

    /**
        Wiąże obiekt regulatora z tym widgetem.
        Zadaniem klasy implementującej jest odświeżenie interfejsu użytkownika
        po dołączeniu regulatora, tak by przedstawiał faktyczne nastawy.
    */
    virtual void attachController(RafMat::SimInterface::IConfigurableSPtr ctrl) = 0;

    /**
        Zatwierdza zmiany regulatora.
        Metoda wywoływana po wciśnięciu odpowiedniego przycisku zatwierdzającego zmiany.
    */
    virtual void applySettings() = 0;
};


#endif // ICONTROLLERDESIGNER_H
